package maintest;

import static org.junit.Assert.*;

import main.AbstractAnalyseurRang;
import main.AnalyseurRangQuinte;
import main.Main;

import org.junit.Test;

import cartes.Carte;
import cartes.CouleurCarte;
import cartes.Denomination;

public class AnalyseurRangQuinteCouleurTest {
	
	AbstractAnalyseurRang analyseur;
	protected Main main;

	@Test
	public void testNull() {
		main = null;
		analyseur = new AnalyseurRangQuinte();
		assertFalse(analyseur.reconnaitreMain(main));
	}
	
	@Test
	public void test0Faux() {
		main = new Main();
		analyseur = new AnalyseurRangQuinte();
		assertFalse(analyseur.reconnaitreMain(main));
	}
	
	@Test
	public void test1Faux() {
		main = new Main();
		analyseur = new AnalyseurRangQuinte();
		for(int i = 0; i < 1; i++) {
			main.add(new Carte(Denomination.AS, CouleurCarte.CARREAU));
		}
		assertFalse(analyseur.reconnaitreMain(main));
	}
	
	@Test
	public void test2Faux() {
		main = new Main();
		analyseur = new AnalyseurRangQuinte();
		for(int i = 0; i < 2; i++) {
			main.add(new Carte(Denomination.AS, CouleurCarte.CARREAU));
		}
		assertFalse(analyseur.reconnaitreMain(main));
	}
	
	@Test
	public void test3Faux() {
		main = new Main();
		analyseur = new AnalyseurRangQuinte();
		for(int i = 0; i < 3; i++) {
			main.add(new Carte(Denomination.AS, CouleurCarte.CARREAU));
		}
		assertFalse(analyseur.reconnaitreMain(main));
	}
	
	@Test
	public void test4Faux() {
		main = new Main();
		analyseur = new AnalyseurRangQuinte();
		for(int i = 0; i < 4; i++) {
			main.add(new Carte(Denomination.AS, CouleurCarte.CARREAU));
		}
		assertFalse(analyseur.reconnaitreMain(main));
	}
	
	@Test
	public void test5Faux() {
		main = new Main();
		analyseur = new AnalyseurRangQuinte();
		for(int i = Denomination.ROI.getIndex(); i <= Denomination.NEUF.getIndex() + 1; i--) {
			main.add(new Carte(Denomination.DENOMINATIONS.get(i), CouleurCarte.COULEURS.get(i%4)));
		}
		for(int i = 0; i < 1; i++) {
			main.add(new Carte(Denomination.AS, CouleurCarte.COEUR));
		}
		assertFalse(analyseur.reconnaitreMain(main));
	}
	
	@Test
	public void test6Faux() {
		main = new Main();
		analyseur = new AnalyseurRangQuinte();
		for(int i = Denomination.ROI.getIndex(); i <= Denomination.NEUF.getIndex() + 1; i--) {
			main.add(new Carte(Denomination.DENOMINATIONS.get(i), CouleurCarte.COULEURS.get(i%4)));
		}
		for(int i = 0; i < 2; i++) {
			main.add(new Carte(Denomination.AS, CouleurCarte.COEUR));
		}
		assertFalse(analyseur.reconnaitreMain(main));
	}
	
	@Test
	public void test5Vrai() {
		main = new Main();
		analyseur = new AnalyseurRangQuinte();
		for(int i = Denomination.ROI.getIndex(); i <= Denomination.NEUF.getIndex(); i--) {
			main.add(new Carte(Denomination.DENOMINATIONS.get(i), CouleurCarte.CARREAU));
		}
		assertFalse(analyseur.reconnaitreMain(main));
	}
	
	@Test
	public void test6Vrai() {
		main = new Main();
		analyseur = new AnalyseurRangQuinte();
		for(int i = Denomination.ROI.getIndex(); i <= Denomination.NEUF.getIndex(); i--) {
			main.add(new Carte(Denomination.DENOMINATIONS.get(i), CouleurCarte.CARREAU));
		}
		for(int i = 0; i < 1; i++) {
			main.add(new Carte(Denomination.AS, CouleurCarte.COEUR));
		}
		assertFalse(analyseur.reconnaitreMain(main));
	}

}